home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lamstex / inputs / cd.tex (.txt) < prev    next >
LaTeX Document  |  1991-09-06  |  35KB  |  976 lines

  1. \catcode`\@=11
  2. \def\Cgaps#1{\RIfM@
  3.  \standardcgap#1\standardcgap\relax\hunit#1\hunit\relax
  4.  \else\nonmatherr@\Cgaps\fi}
  5. \def\Rgaps#1{\RIfM@
  6.  \standardrgap#1\standardrgap\relax\vunit#1\vunit\relax
  7.  \else\nonmatherr@\Rgaps\fi}
  8. \def\getcgap@#1{\ifcase#1\or\getdim@\z@\else\getdim@\standardcgap\fi}
  9. \def\getrgap@#1{\ifcase#1\getdim@\z@\else\getdim@\standardrgap\fi}
  10. {\catcode`\;=\active
  11.  \gdef\cgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi
  12.    \xdef\Next@{\noexpand\cgaps@{#1}}}%
  13.   \Next@\edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}\else
  14.   \nonmatherr@\cgaps\fi}
  15.  \gdef\rgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi
  16.    \xdef\Next@{\noexpand\rgaps@{#1}}}%
  17.   \Next@\edef\getrgap@##1{\i@##1\relax\the\toks@}\toks@{}\else
  18.   \nonmatherr@\rgaps\fi}
  19. \def\Gaps@@{\gaps@@}
  20. \def\cgaps@#1{\toks@{\ifcase\i@\or\getdim@=\z@}%
  21.  \gaps@@\standardcgap#1;\gaps@@\gaps@@
  22.  \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap
  23.   \noexpand\fi}%
  24.  \toks@=\expandafter{\next@}}
  25. \def\rgaps@#1{\toks@{\ifcase\i@\getdim@=\z@}%
  26.  \gaps@@\standardrgap#1;\gaps@@\gaps@@
  27.  \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardrgap
  28.   \noexpand\fi}%
  29.  \toks@=\expandafter{\next@}}
  30. \def\gaps@@#1#2;#3{\mgaps@#1#2\mgaps@
  31.  \edef\next@{\the\toks@\noexpand\or\noexpand\getdim@
  32.   \noexpand#1\the\mgapstoks@@}%
  33.  \toks@\expandafter{\next@}%
  34.  \DN@{#3}%
  35.  \ifx\next@\Gaps@@\def\next@##1\gaps@@{}\else
  36.   \def\next@{\gaps@@#1#3}\fi\next@}
  37. \def\mgaps@#1{\let\mgapsnext@#1\FNSS@\mgaps@@}
  38. \def\mgaps@@{\ifx\next\w\expandafter\mgaps@@@\else
  39.  \expandafter\mgaps@@@@\fi}
  40. \def\mgaps@@@@#1\mgaps@{\getdim@\mgapsnext@\getdim@#1\getdim@
  41.  \edef\next@{\noexpand\getdim@\the\getdim@}%
  42.  \mgapstoks@@\expandafter{\next@}}
  43. \def\mgaps@@@\w#1#2\mgaps@{\mgaps@@@@#2\mgaps@
  44.  \setbox\ZER@\hbox{$\m@th\hskip15\p@\tsize@#1$}%
  45.  \dimen@\wd\ZER@
  46.  \ifdim\dimen@>\getdim@\getdim@\dimen@\fi
  47.  \edef\next@{\noexpand\getdim@\the\getdim@}%
  48.  \mgapstoks@@\expandafter{\next@}}
  49. \def\changewidth#1#2{\setbox\ZER@{$\m@th#2}%
  50.  \hbox to\wd\ZER@{\hss$\m@th#1$\hss}}
  51. \def\ARROW@{\ifx\next)\let\next@\OPTIONS@\else
  52.  \DN@{\csname\string @(\endcsname}\fi\next@}
  53. \def\OPTIONS@){\ifoptions@\let\next@\relax\else
  54.  \DN@{\global\options@true\begingroup\optioncodes@}\fi\next@}
  55. \expandafter\def\csname\string @(\endcsname #1,#2){%
  56.  \ifoptions@\expandafter\endgroup\fi
  57.  \N@false\E@false\H@false\V@false\Hshort@false
  58.  \ifnum#1>\z@\E@true\fi
  59.  \ifnum#1=\z@\V@true\global\tX@false\global\tY@false\global\a@false\fi
  60.  \ifnum#2>\z@\N@true\fi
  61.  \ifnum#2=\z@\H@true\global\tX@false\global\tY@false\global\a@false
  62.   \ifshort@\Hshort@true\fi\fi
  63.  \NESW@false
  64.  \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi
  65.  \arrow@{#1}{#2}%
  66.  \global\options@false
  67.  \global\scount@\z@\global\tcount@\z@\global\arrcount@\z@
  68.  \global\s@false\global\sxdimen@\z@\global\sydimen@\z@
  69.  \global\tX@false\global\tXdimen@i\z@\global\tXdimen@ii\z@
  70.  \global\tY@false\global\tYdimen@i\z@\global\tYdimen@ii\z@
  71.  \global\a@false\global\exacount@\z@
  72.  \global\x@false\global\xdimen@\z@
  73.  \global\X@false\global\Xdimen@\z@
  74.  \global\y@false\global\ydimen@\z@
  75.  \global\Y@false\global\Ydimen@\z@
  76.  \global\p@false\global\pdimen@\z@
  77.  \global\label@ifalse\global\label@iifalse
  78.  \global\dl@ifalse\global\ldimen@i\z@
  79.  \global\dl@iifalse\global\ldimen@ii\z@
  80.  \global\short@false\global\unshort@false}
  81. \def\zero@#1{\ifnum\scount@=\z@
  82.  \if#1e\global\scount@\m@ne\else
  83.  \if#1t\global\scount@\tw@\else
  84.  \if#1h\global\scount@\thr@@\else
  85.  \if#1'\global\scount@6 \else
  86.  \if#1`\global\scount@7 \else
  87.  \if#1(\global\scount@8 \else
  88.  \if#1)\global\scount@9 \else
  89.  \if#1s\global\scount@12 \else
  90.  \if#1H\global\scount@13 \else
  91.  \Err@{\Invalid@@ option \string\0}\fi\fi\fi\fi\fi\fi\fi\fi\fi
  92.  \fi}
  93. \def\one@#1{\ifnum\tcount@=\z@
  94.  \if#1e\global\tcount@\m@ne\else
  95.  \if#1h\global\tcount@\tw@\else
  96.  \if#1t\global\tcount@\thr@@\else
  97.  \if#1'\global\tcount@4 \else
  98.  \if#1`\global\tcount@5 \else
  99.  \if#1(\global\tcount@\ten@ \else
  100.  \if#1)\global\tcount@11 \else
  101.  \if#1s\global\tcount@12 \else
  102.  \if#1H\global\tcount@13 \else
  103.  \Err@{\Invalid@@ option \string\1}\fi\fi\fi\fi\fi\fi\fi\fi\fi
  104.  \fi}
  105. \def\a@#1{\ifnum\arrcount@=\z@
  106.  \if#10\global\arrcount@\m@ne\else
  107.  \if#1+\global\arrcount@\@ne\else
  108.  \if#1-\global\arrcount@\tw@\else
  109.  \if#1=\global\arrcount@\thr@@\else
  110.  \Err@{\Invalid@@ option \string\a}\fi\fi\fi\fi
  111.  \fi}
  112. \def\ds@{\ifnum\catcode`\;=\active\expandafter\dsA@\else
  113.  \expandafter\dsO@\fi}
  114. \def\dsO@(#1;#2){\ds@@{#1}{#2}}
  115. \def\ds@@#1#2{\ifs@\else
  116.  \global\s@true
  117.  \global\sxdimen@\hunit\global\sxdimen@#1\sxdimen@\relax
  118.  \global\sydimen@\vunit\global\sydimen@#2\sydimen@\relax
  119.  \fi}
  120. \def\dtX@{\ifnum\catcode`\;=\active\expandafter\dtXA@\else
  121.  \expandafter\dtXO@\fi}
  122. \def\dtXO@(#1;#2){\dtX@@{#1}{#2}}
  123. \def\dtX@@#1#2{\iftX@\else
  124.  \global\tX@true
  125.  \global\tXdimen@i\hunit\global\tXdimen@i#1\tXdimen@i\relax
  126.  \global\tXdimen@ii\vunit\global\tXdimen@ii#2\tXdimen@ii\relax
  127.  \fi}
  128. \def\dtY@{\ifnum\catcode`\;=\active\expandafter\dtYA@\else
  129.  \expandafter\dtYO@\fi}
  130. \def\dtYO@(#1;#2){\dtY@@{#1}{#2}}
  131. \def\dtY@@#1#2{\iftY@\else
  132.  \global\tY@true
  133.  \global\tYdimen@i\hunit\global\tYdimen@i#1\tYdimen@i\relax
  134.  \global\tYdimen@ii\vunit\global\tYdimen@ii#2\tYdimen@ii\relax
  135.  \fi}
  136. {\catcode`\;=\active
  137.  \gdef\dsA@(#1;#2){\ds@@{#1}{#2}}
  138.  \gdef\dtXA@(#1;#2){\dtX@@{#1}{#2}}
  139.  \gdef\dtYA@(#1;#2){\dtY@@{#1}{#2}}
  140. \def\da@#1{\ifa@\else\global\a@true\global\exacount@#1\relax\fi}
  141. \def\dx@#1{\ifx@\else
  142.  \global\x@true
  143.  \global\xdimen@\hunit\global\xdimen@#1\xdimen@\relax
  144.  \fi}
  145. \def\dX@#1{\ifX@\else
  146.  \global\X@true
  147.  \global\Xdimen@\hunit\global\Xdimen@#1\Xdimen@\relax
  148.  \fi}
  149. \def\dy@#1{\ify@\else
  150.  \global\y@true
  151.  \global\ydimen@\vunit\global\ydimen@#1\ydimen@\relax
  152.  \fi}
  153. \def\dY@#1{\ifY@\else
  154.  \global\Y@true
  155.  \global\Ydimen@\vunit\global\Ydimen@#1\Ydimen@\relax
  156.  \fi}
  157. \def\p@@#1{\ifp@\else
  158.  \global\p@true
  159.  \global\pdimen@\hunit\global\divide\pdimen@\tw@
  160.  \global\pdimen@#1\pdimen@\relax
  161.  \fi}
  162. \def\L@#1{\iflabel@i\else
  163.  \global\label@itrue\gdef\label@i{#1}%
  164.  \fi}
  165. \def\l@#1{\iflabel@ii\else
  166.  \global\label@iitrue\gdef\label@ii{#1}%
  167.  \fi}
  168. \def\dL@#1{\ifdl@i\else
  169.  \global\dl@itrue\global\ldimen@i\hunit\global\ldimen@i#1\ldimen@i\relax
  170.  \fi}
  171. \def\dl@#1{\ifdl@ii\else
  172.  \global\dl@iitrue\global\ldimen@ii\hunit\global\ldimen@ii#1\ldimen@ii\relax
  173.  \fi}
  174. \def\s@{\ifunshort@\else\global\short@true\fi}
  175. \def\uns@{\ifshort@\else\global\unshort@true\global\short@false\fi}
  176. \def\optioncodes@{\let\0\zero@\let\1\one@\let\a\a@\let\ds\ds@\let\dtX\dtX@
  177.  \let\dtY\dtY@\let\da\da@\let\dx\dx@\let\dX\dX@\let\dY\dY@\let\dy\dy@
  178.  \let\p\p@@\let\L\L@\let\l\l@\let\dL\dL@\let\dl\dl@\let\s\s@\let\uns\uns@}
  179. \def\slopes@{\\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}\\56{11}%
  180.  \\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}\\21{18}\\52{19}\\31{20}%
  181.  \\41{21}\\51{22}\\61{23}}
  182. \def\slope@{{\slope@i\secondy@\advance\slope@i-\firsty@
  183.  \ifN@\else\multiply\slope@i\m@ne\fi
  184.  \slope@ii\secondx@\advance\slope@ii-\firstx@
  185.  \ifE@\else\multiply\slope@ii\m@ne\fi
  186.  \ifdim\slope@ii<\z@
  187.   \global\tan@i6 \global\tan@ii\@ne\global\angcount@23
  188.  \else
  189.   \dimen@\slope@i\multiply\dimen@6
  190.   \ifdim\dimen@<\slope@ii
  191.    \global\tan@i\@ne\global\tan@ii6 \global\angcount@\@ne
  192.   \else
  193.    \dimen@\slope@ii\multiply\dimen@6
  194.    \ifdim\dimen@<\slope@i
  195.     \global\tan@i6 \global\tan@ii\@ne\global\angcount@23
  196.    \else
  197.     \global\tan@ip\z@\global\tan@iip\@ne
  198.     \def\\##1##2##3{\global\angcount@##3\relax
  199.      \slope@ip\slope@i\slope@iip\slope@ii
  200.      \multiply\slope@iip##1\relax\multiply\slope@ip##2\relax
  201.      \ifdim\slope@iip<\slope@ip
  202.       \global\tan@ip##1\relax\global\tan@iip##2\relax
  203.      \else
  204.       \global\tan@i##1\relax\global\tan@ii##2\relax
  205.       \def\\####1####2####3{}%
  206.      \fi}%
  207.     \slopes@
  208.     \slope@i\secondy@\advance\slope@i-\firsty@
  209.     \ifN@\else\multiply\slope@i\m@ne\fi
  210.     \multiply\slope@i\tan@ii\multiply\slope@i\tan@iip\multiply\slope@i\tw@
  211.     \count@\tan@i\multiply\count@\tan@iip
  212.     \extracount@\tan@ip\multiply\extracount@\tan@ii
  213.     \advance\count@\extracount@
  214.     \slope@ii\secondx@\advance\slope@ii-\firstx@
  215.     \ifE@\else\multiply\slope@ii\m@ne\fi
  216.     \multiply\slope@ii\count@
  217.     \ifdim\slope@i<\slope@ii
  218.      \global\tan@i\tan@ip\global\tan@ii\tan@iip
  219.      \global\advance\angcount@\m@ne
  220.     \fi
  221.    \fi
  222.   \fi
  223.  \fi}%
  224. \def\slope@a#1{{\def\\##1##2##3{\ifnum##3=#1\global\tan@i##1\relax
  225.  \global\tan@ii##2\relax\fi}\slopes@}}
  226. \def\dotoks@i{%
  227.  \global\widthtoks@\expandafter{\the\widthtoks@\else\getdim@\z@\fi}%
  228.  \global\heighttoks@\expandafter{\the\heighttoks@\else\getdim@\z@\fi}%
  229.  \global\depthtoks@\expandafter{\the\depthtoks@\else\getdim@\z@\fi}}
  230. \def\dotoks@ii{%
  231.  \global\widthtoks@{\ifcase\j@}%
  232.  \global\heighttoks@{\ifcase\j@}%
  233.  \global\depthtoks@{\ifcase\j@}}
  234. \def\preCD@#1\endCD{\setbox\ZER@
  235.  \vbox{%
  236.   \def\arrow@##1##2{{}}%
  237.   \global\rowcount@\m@ne\global\colcount@\z@\global\Colcount@\z@
  238.   \global\firstCDcr@true\toks@{}%
  239.   \global\widthtoks@{\ifcase\j@}%
  240.   \global\Widthtoks@{\ifcase\i@}%
  241.   \global\heighttoks@{\ifcase\j@}%
  242.   \global\Heighttoks@{\ifcase\i@}%
  243.   \global\depthtoks@{\ifcase\j@}%
  244.   \global\Depthtoks@{\ifcase\i@}%
  245.   \global\Rowheighttoks@{\ifcase\i@}%
  246.   \global\Rowdepthtoks@{\ifcase\i@}%
  247.   \Let@
  248.   \everycr{%
  249.    \noalign{%
  250.     \global\advance\rowcount@\@ne
  251.     \ifnum\colcount@<\Colcount@
  252.     \else
  253.      \global\Colcount@\colcount@\global\maxcolrow@\rowcount@
  254.     \fi
  255.     \global\colcount@\z@
  256.     \iffirstCDcr@
  257.      \global\firstCDcr@false
  258.     \else
  259.      \edef\next@{\the\Rowheighttoks@\noexpand\or\noexpand\getdim@\the\rowht@}%
  260.       \global\Rowheighttoks@\expandafter{\next@}%
  261.      \edef\next@{\the\Rowdepthtoks@\noexpand\or\noexpand\getdim@\the\rowdp@}%
  262.       \global\Rowdepthtoks@\expandafter{\next@}%
  263.      \global\rowht@\z@\global\rowdp@\z@
  264.      \dotoks@i
  265.      \edef\next@{\the\Widthtoks@\noexpand\or\the\widthtoks@}%
  266.       \global\Widthtoks@\expandafter{\next@}%
  267.      \edef\next@{\the\Heighttoks@\noexpand\or\the\heighttoks@}%
  268.       \global\Heighttoks@\expandafter{\next@}%
  269.      \edef\next@{\the\Depthtoks@\noexpand\or\the\depthtoks@}%
  270.       \global\Depthtoks@\expandafter{\next@}%
  271.      \dotoks@ii
  272.     \fi}}%
  273.   \tabskip\z@
  274.   \halign{&\setbox\ZER@\hbox{\vrule\height\ten@\p@\width\z@\depth\z@     %1
  275.    $\m@th\displaystyle{##}$}\copy\ZER@
  276.    \ifdim\ht\ZER@>\rowht@\global\rowht@\ht\ZER@\fi
  277.    \ifdim\dp\ZER@>\rowdp@\global\rowdp@\dp\ZER@\fi
  278.    \global\advance\colcount@\@ne
  279.    \edef\next@{\the\widthtoks@\noexpand\or\noexpand\getdim@\the\wd\ZER@}%
  280.     \global\widthtoks@\expandafter{\next@}%
  281.    \edef\next@{\the\heighttoks@\noexpand\or\noexpand\getdim@\the\ht\ZER@}%
  282.     \global\heighttoks@\expandafter{\next@}%
  283.    \edef\next@{\the\depthtoks@\noexpand\or\noexpand\getdim@\the\dp\ZER@}%
  284.     \global\depthtoks@\expandafter{\next@}%
  285.    \cr#1\crcr}}%
  286.  \Rowcount@\rowcount@
  287.  \global\Widthtoks@\expandafter{\the\Widthtoks@\fi\relax}%
  288.  \edef\Width@##1##2{\i@##1\relax\j@##2\relax\the\Widthtoks@}%
  289.  \global\Heighttoks@\expandafter{\the\Heighttoks@\fi\relax}%
  290.  \edef\Height@##1##2{\i@##1\relax\j@##2\relax\the\Heighttoks@}%
  291.  \global\Depthtoks@\expandafter{\the\Depthtoks@\fi\relax}%
  292.  \edef\Depth@##1##2{\i@##1\relax\j@##2\relax\the\Depthtoks@}%
  293.  \edef\next@{\the\Rowheighttoks@\noexpand\fi\relax}%
  294.  \global\Rowheighttoks@\expandafter{\next@}%
  295.  \edef\Rowheight@##1{\i@##1\relax\the\Rowheighttoks@}%
  296.  \edef\next@{\the\Rowdepthtoks@\noexpand\fi\relax}%
  297.  \global\Rowdepthtoks@\expandafter{\next@}%
  298.  \edef\Rowdepth@##1{\i@##1\relax\the\Rowdepthtoks@}%
  299.  \global\colwidthtoks@{\fi}%
  300.  \setbox\ZER@\vbox{%
  301.   \unvbox\ZER@
  302.   \count@\rowcount@
  303.   \loop
  304.    \unskip\unpenalty
  305.    \setbox\ZER@\lastbox
  306.    \ifnum\count@>\maxcolrow@\advance\count@\m@ne
  307.    \repeat
  308.   \hbox{%
  309.    \unhbox\ZER@
  310.    \count@\z@
  311.    \loop
  312.     \unskip
  313.     \setbox\ZER@\lastbox
  314.     \edef\next@{\noexpand\or\noexpand\getdim@\the\wd\ZER@\the\colwidthtoks@}%
  315.      \global\colwidthtoks@\expandafter{\next@}%
  316.     \advance\count@\@ne
  317.     \ifnum\count@<\Colcount@
  318.     \repeat}}%
  319.  \edef\next@{\noexpand\ifcase\noexpand\i@\the\colwidthtoks@}%
  320.   \global\colwidthtoks@\expandafter{\next@}%
  321.  \edef\Colwidth@##1{\i@##1\relax\the\colwidthtoks@}%
  322.  \global\colwidthtoks@{}\global\Rowheighttoks@{}\global\Rowdepthtoks@{}%
  323.  \global\widthtoks@{}\global\Widthtoks@{}\global\heighttoks@{}%
  324.  \global\Heighttoks@{}\global\depthtoks@{}\global\Depthtoks@{}%
  325. \def\outside@{\Err@{This arrow points outside the \string\CD}}
  326. \def\arrow@#1#2{\global\xoff@#1\relax\global\yoff@#2\relax
  327.  \count@\rowcount@\advance\count@-\yoff@
  328.  \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Rowcount@\outside@\fi\fi
  329.  \count@\colcount@\advance\count@\xoff@
  330.  \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Colcount@\outside@\fi\fi
  331.  \tcolcount@\colcount@\advance\tcolcount@\xoff@
  332.  \Width@\rowcount@\colcount@\divide\getdim@\tw@\tocenter@-\getdim@
  333.  \ifdim\getdim@=\z@
  334.   \firstx@\z@\firsty@\mathaxis@\svertex@true
  335.  \else
  336.   \svertex@false
  337.   \ifHshort@
  338.    \Colwidth@\colcount@\divide\getdim@\tw@
  339.    \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi
  340.   \else
  341.    \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi
  342.   \fi
  343.   \ifE@
  344.    \ifH@ \advance\firstx@\thr@@\p@ \else \advance\firstx@-\thr@@\p@ \fi  %2
  345.   \else
  346.    \ifH@ \advance\firstx@-\thr@@\p@ \else \advance\firstx@\thr@@\p@ \fi  %3
  347.   \fi
  348.   \ifN@
  349.    \Height@\rowcount@\colcount@ \firsty@\getdim@                         %4
  350.    \ifV@ \advance\firsty@\thr@@\p@ \fi                                   %5
  351.   \else
  352.    \ifV@
  353.     \Depth@\rowcount@\colcount@ \firsty@-\getdim@                        %6
  354.     \advance\firsty@-\thr@@\p@                                           %7
  355.    \else
  356.     \firsty@\z@                                                          %8
  357.    \fi
  358.   \fi
  359.  \ifV@
  360.  \else
  361.   \Colwidth@\colcount@\divide\getdim@\tw@
  362.   \ifE@\secondx@\getdim@\else\secondx@-\getdim@\fi
  363.   \ifE@\else\getcgap@\colcount@\advance\secondx@-\getdim@\fi
  364.   \endcount@\colcount@\advance\endcount@\xoff@
  365.   \count@\colcount@
  366.   \ifE@
  367.    \advance\count@\@ne
  368.    \loop
  369.     \ifnum\count@<\endcount@
  370.     \Colwidth@\count@\advance\secondx@\getdim@
  371.     \getcgap@\count@\advance\secondx@\getdim@
  372.     \advance\count@\@ne
  373.     \repeat
  374.   \else
  375.    \advance\count@\m@ne
  376.    \loop
  377.     \ifnum\count@>\endcount@
  378.     \Colwidth@\count@\advance\secondx@-\getdim@
  379.     \getcgap@\count@\advance\secondx@-\getdim@
  380.     \advance\count@\m@ne
  381.     \repeat
  382.   \fi
  383.   \Colwidth@\count@\divide\getdim@\tw@
  384.   \ifHshort@
  385.   \else
  386.    \ifE@\advance\secondx@\getdim@\else\advance\secondx@-\getdim@\fi
  387.   \fi
  388.   \ifE@\getcgap@\count@\advance\secondx@\getdim@\fi
  389.   \rcount@\rowcount@\advance\rcount@-\yoff@
  390.   \Width@\rcount@\count@\divide\getdim@\tw@
  391.   \tvertex@false
  392.   \ifH@\ifdim\getdim@=\z@\tvertex@true\Hshort@false\fi\fi
  393.   \ifHshort@
  394.   \else
  395.    \ifE@\advance\secondx@-\getdim@\else\advance\secondx@\getdim@\fi
  396.   \fi
  397.   \iftvertex@
  398.    \advance\secondx@.4\p@
  399.   \else
  400.    \ifE@\advance\secondx@-\thr@@\p@\else\advance\secondx@\thr@@\p@\fi    %9
  401.   \fi
  402.  \ifH@
  403.  \else
  404.   \ifN@
  405.    \Rowheight@\rowcount@\secondy@\getdim@
  406.   \else
  407.    \Rowdepth@\rowcount@\secondy@-\getdim@
  408.    \getrgap@\rowcount@\advance\secondy@-\getdim@
  409.   \fi
  410.   \endcount@\rowcount@\advance\endcount@-\yoff@
  411.   \count@\rowcount@
  412.   \ifN@
  413.    \advance\count@\m@ne
  414.    \loop
  415.     \ifnum\count@>\endcount@
  416.     \Rowheight@\count@\advance\secondy@\getdim@
  417.     \Rowdepth@\count@\advance\secondy@\getdim@
  418.     \getrgap@\count@\advance\secondy@\getdim@
  419.     \advance\count@\m@ne
  420.     \repeat
  421.   \else
  422.    \advance\count@\@ne
  423.    \loop
  424.     \ifnum\count@<\endcount@
  425.     \Rowheight@\count@\advance\secondy@-\getdim@
  426.     \Rowdepth@\count@\advance\secondy@-\getdim@
  427.     \getrgap@\count@\advance\secondy@-\getdim@
  428.     \advance\count@\@ne
  429.     \repeat
  430.   \fi
  431.   \tvertex@false
  432.   \ifV@\Width@\count@\colcount@\ifdim\getdim@=\z@\tvertex@true\fi\fi
  433.   \ifN@
  434.    \getrgap@\count@\advance\secondy@\getdim@
  435.    \Rowdepth@\count@\advance\secondy@\getdim@
  436.    \iftvertex@
  437.     \advance\secondy@\mathaxis@
  438.    \else
  439.     \Depth@\count@\tcolcount@\advance\secondy@-\getdim@
  440.     \advance\secondy@-\thr@@\p@                                          %10
  441.    \fi
  442.   \else
  443.    \Rowheight@\count@\advance\secondy@-\getdim@
  444.    \iftvertex@
  445.     \advance\secondy@\mathaxis@
  446.    \else
  447.     \Height@\count@\tcolcount@\advance\secondy@\getdim@
  448.     \advance\secondy@\thr@@\p@                                           %11
  449.    \fi
  450.   \fi
  451.  \ifV@\else\advance\firstx@\sxdimen@\fi
  452.  \ifH@\else\advance\firsty@\sydimen@\fi
  453.  \iftX@
  454.   \advance\secondy@\tXdimen@ii
  455.   \advance\secondx@\tXdimen@i
  456.   \slope@
  457.  \else
  458.   \iftY@
  459.    \advance\secondy@\tYdimen@ii
  460.    \advance\secondx@\tYdimen@i
  461.    \slope@
  462.    \secondy@\secondx@\advance\secondy@-\firstx@
  463.    \ifNESW@\else\multiply\secondy@\m@ne\fi
  464.    \multiply\secondy@\tan@i\divide\secondy@\tan@ii\advance\secondy@\firsty@
  465.   \else
  466.    \ifa@
  467.     \slope@
  468.     \ifNESW@\global\advance\angcount@\exacount@\else
  469.      \global\advance\angcount@-\exacount@\fi
  470.     \ifnum\angcount@>23 \global\angcount@23 \fi
  471.     \ifnum\angcount@<\@ne\global\angcount@\@ne\fi
  472.     \slope@a\angcount@
  473.     \ifY@
  474.      \advance\secondy@\Ydimen@
  475.     \else
  476.      \ifX@
  477.       \advance\secondx@\Xdimen@
  478.       \dimen@\secondx@\advance\dimen@-\firstx@
  479.       \ifNESW@\else\multiply\dimen@\m@ne\fi
  480.       \multiply\dimen@\tan@i\divide\dimen@\tan@ii
  481.       \advance\dimen@\firsty@\secondy@\dimen@
  482.      \fi
  483.     \fi
  484.    \else
  485.     \ifH@\else\ifV@\else\slope@\fi\fi
  486.    \fi
  487.   \fi
  488.  \ifH@\else\ifV@\else\ifsvertex@\else
  489.   \dimen@6\p@\multiply\dimen@\tan@ii
  490.   \count@\tan@i\advance\count@\tan@ii\divide\dimen@\count@
  491.   \ifE@\advance\firstx@\dimen@\else\advance\firstx@-\dimen@\fi
  492.   \multiply\dimen@\tan@i\divide\dimen@\tan@ii
  493.   \ifN@\advance\firsty@\dimen@\else\advance\firsty@-\dimen@\fi
  494.  \fi\fi\fi
  495.  \ifp@
  496.   \ifH@\else\ifV@\else
  497.    \getcos@\pdimen@\advance\firsty@\dimen@\advance\secondy@\dimen@
  498.    \ifNESW@\advance\firstx@-\dimen@ii\else\advance\firstx@\dimen@ii\fi
  499.   \fi\fi
  500.  \ifH@\else\ifV@\else
  501.   \ifnum\tan@i>\tan@ii
  502.    \charht@\ten@\p@\charwd@\ten@\p@
  503.    \multiply\charwd@\tan@ii\divide\charwd@\tan@i
  504.   \else
  505.    \charwd@\ten@\p@\charht@\ten@\p@
  506.    \divide\charht@\tan@ii\multiply\charht@\tan@i
  507.   \fi
  508.   \ifnum\tcount@=\thr@@
  509.    \ifN@\advance\secondy@-.3\charht@\else\advance\secondy@.3\charht@\fi
  510.   \fi
  511.   \ifnum\scount@=\tw@
  512.    \ifE@\advance\firstx@.3\charht@\else\advance\firstx@-.3\charht@\fi
  513.   \fi
  514.   \ifnum\tcount@=12
  515.    \ifN@\advance\secondy@-\charht@\else\advance\secondy@\charht@\fi
  516.   \fi
  517.   \iftY@
  518.   \else
  519.    \ifa@
  520.     \ifX@
  521.     \else
  522.      \secondx@\secondy@\advance\secondx@-\firsty@
  523.      \ifNESW@\else\multiply\secondx@\m@ne\fi
  524.      \multiply\secondx@\tan@ii\divide\secondx@\tan@i
  525.      \advance\secondx@\firstx@
  526.     \fi
  527.    \fi
  528.   \fi
  529.  \fi\fi
  530.  \ifH@\harrow@\else\ifV@\varrow@\else\arrow@@\fi\fi}
  531. \def\harrow@b{\ifE@\hskip\tocenter@\hskip\firstx@\fi}
  532. \def\harrow@bb{\ifE@\hskip\xdimen@\else\hskip\Xdimen@\fi}
  533. \def\harrow@e{\ifE@\else\hskip-\firstx@\hskip-\tocenter@\fi}
  534. \def\harrow@ee{\ifE@\hskip-\Xdimen@\else\hskip-\xdimen@\fi}
  535. \def\harrow@{\dimen@\secondx@\advance\dimen@-\firstx@
  536.  \ifE@\let\next@\rlap\else\multiply\dimen@\m@ne\let\next@\llap\fi
  537.  \next@{%
  538.   \harrow@b
  539.   \smash{\raise\pdimen@\hbox to\dimen@
  540.    {\harrow@bb\arrow@ii
  541.     \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  542.      \ifE@
  543.       \ifnum\scount@=\m@ne
  544.       \else
  545.        \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  546.        \char120 \or\char121 \or\char122 \or\or\or\arrow@i\char125 \or
  547.        \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
  548.       \fi
  549.      \else
  550.       \ifnum\tcount@=\m@ne
  551.       \else
  552.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  553.        \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@i\char125
  554.        \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
  555.       \fi
  556.      \fi
  557.     \fi\fi
  558.     \dimen@\mathaxis@\advance\dimen@.2\p@
  559.     \dimen@ii\mathaxis@\advance\dimen@ii-.2\p@
  560.     \ifnum\arrcount@=\m@ne
  561.      \let\leads@\null
  562.     \else
  563.      \ifcase\arrcount@
  564.       \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or
  565.       \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or
  566.       \def\leads@{\hbox to\ten@\p@{%
  567.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil
  568.        \hfil
  569.       \leaders\hrule\height\dimen@\depth-\dimen@ii\hskip\z@ plus2fil\relax
  570.        \hfil
  571.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}\or
  572.      \def\leads@{\hbox{\hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@1.2\p@
  573.        \dimen@ii\dimen@\advance\dimen@ii-.4\p@
  574.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}%
  575.        \kern-\ten@\p@
  576.        \hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@-1.2\p@
  577.        \dimen@ii\dimen@\advance\dimen@ii-.4\p@
  578.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}}\fi
  579.     \fi
  580.     \cleaders\leads@\hfil
  581.     \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  582.      \arrow@i
  583.      \ifE@
  584.       \ifnum\tcount@=\m@ne
  585.       \else
  586.        \ifcase\tcount@\char119 \or\or\char119 \or\char120 \or\char121 \or
  587.        \char122 \or \or\or\or\or\char123 \or\char124 \or
  588.        \char125 \or\char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
  589.       \fi
  590.      \else
  591.       \ifcase\scount@\or\or\char120 \or\char119 \or\or\or\char121 \or\char122
  592.       \or\char123 \or\char124 \or\or\or\char125 \or
  593.       \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
  594.      \fi
  595.     \fi\fi
  596.     \harrow@ee}}%
  597.   \harrow@e}%
  598.  \iflabel@i
  599.   \dimen@ii\z@\setbox\ZER@\hbox{$\m@th\tsize@@\label@i$}%
  600.   \ifnum\arrcount@=\m@ne
  601.   \else
  602.    \advance\dimen@ii\mathaxis@
  603.    \advance\dimen@ii\dp\ZER@\advance\dimen@ii\tw@\p@
  604.    \ifnum\arrcount@=\thr@@\advance\dimen@ii\tw@\p@\fi
  605.   \fi
  606.   \advance\dimen@ii\pdimen@
  607.   \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
  608.    {\harrow@bb\hskip\tw@\ldimen@i\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}%
  609.  \iflabel@ii
  610.   \ifnum\arrcount@=\m@ne
  611.   \else
  612.    \setbox\ZER@\hbox{$\m@th\tsize@\label@ii$}%
  613.    \dimen@ii-\ht\ZER@\advance\dimen@ii-\tw@\p@
  614.    \ifnum\arrcount@=\thr@@\advance\dimen@ii-\tw@\p@\fi
  615.    \advance\dimen@ii\mathaxis@\advance\dimen@ii\pdimen@
  616.    \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
  617.     {\harrow@bb\hskip\tw@\ldimen@ii\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}%
  618.   \fi
  619.  \fi}
  620. \let\tsize@\tsize
  621. \def\tsizeCDlabels{\let\tsize@\tsize}
  622. \def\ssizeCDlabels{\let\tsize@\ssize}
  623. \def\tsize@@{\ifnum\arrcount@=\m@ne\else\tsize@\fi}
  624. \def\varrow@{\dimen@\secondy@\advance\dimen@-\firsty@
  625.  \ifN@\else\multiply\dimen@\m@ne\fi
  626.  \setbox\ZER@\vbox to\dimen@
  627.   {\ifN@\vskip-\Ydimen@\else\vskip\ydimen@\fi
  628.    \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  629.     \hbox{\arrow@iii
  630.      \ifN@
  631.       \ifnum\tcount@=\m@ne
  632.       \else
  633.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  634.        \char120 \or\or\or\or\or\char121 \or\char122 \or\char123 \or
  635.        \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@
  636.        \hbox{\char117}\vskip-\thr@@\p@}\fi
  637.       \fi
  638.      \else
  639.       \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  640.       \char120 \or\char121 \or\char122 \or\or\or\char123 \or
  641.       \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@
  642.       \hbox{\char117}\vskip-\thr@@\p@}\fi
  643.      \fi}%
  644.     \nointerlineskip
  645.    \fi\fi
  646.    \ifnum\arrcount@=\m@ne
  647.     \let\leads@\null
  648.    \else
  649.     \ifcase\arrcount@\let\leads@\vrule\or\let\leads@\vrule\or
  650.     \def\leads@{\vbox to\ten@\p@{%
  651.      \hrule\height1.67\p@\depth\z@\width.4\p@
  652.      \vfil
  653.      \hrule\height3.33\p@\depth\z@\width.4\p@
  654.      \vfil
  655.      \hrule\height1.67\p@\depth\z@\width.4\p@}}\or
  656.     \def\leads@{\hbox{\vrule\height\p@\hskip\tw@\p@\vrule}}\fi
  657.    \fi
  658.   \cleaders\leads@\vfill\nointerlineskip
  659.    \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  660.     \hbox{\arrow@iv
  661.      \ifN@
  662.       \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  663.       \char120 \or\char121 \or\char122 \or\or\or\arrow@iii\char123 \or
  664.       \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@
  665.       \hbox{\char117}\vskip\thr@@\p@}\fi
  666.      \else
  667.       \ifnum\tcount@=\m@ne
  668.       \else
  669.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  670.        \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@iii\char123 \or
  671.        \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@
  672.        \hbox{\char117}\vskip\thr@@\p@}\fi
  673.       \fi
  674.      \fi}%
  675.    \fi\fi
  676.    \ifN@\vskip\ydimen@\else\vskip-\Ydimen@\fi}%
  677.  \ifN@
  678.   \dimen@ii\firsty@
  679.  \else
  680.   \dimen@ii-\firsty@\advance\dimen@ii\ht\ZER@\multiply\dimen@ii\m@ne
  681.  \rlap{\smash{\hskip\tocenter@\hskip\pdimen@\raise\dimen@ii\box\ZER@}}%
  682.  \iflabel@i
  683.   \setbox\ZER@\vbox to\dimen@{\vfil
  684.    \hbox{$\m@th\tsize@@\label@i$}\vskip\tw@\ldimen@i\vfil}%
  685.   \rlap{\smash{\hskip\tocenter@\hskip\pdimen@
  686.   \ifnum\arrcount@=\m@ne\let\next@\relax\else\let\next@\llap\fi
  687.   \next@{\raise\dimen@ii\hbox{\ifnum\arrcount@=\m@ne\hskip-.5\wd\ZER@\fi
  688.    \box\ZER@\ifnum\arrcount@=\m@ne\else\hskip\tw@\p@\fi}}}}%
  689.  \iflabel@ii
  690.   \ifnum\arrcount@=\m@ne
  691.   \else
  692.    \setbox\ZER@\vbox to\dimen@{\vfil
  693.     \hbox{$\m@th\tsize@\label@ii$}\vskip\tw@\ldimen@ii\vfil}%
  694.    \rlap{\smash{\hskip\tocenter@\hskip\pdimen@
  695.    \rlap{\raise\dimen@ii\hbox{\ifnum\arrcount@=\thr@@\hskip4.5\p@\else
  696.     \hskip2.5\p@\fi\box\ZER@}}}}%
  697.   \fi
  698. \def\getcos@#1{%
  699.  \ifnum\tan@i<\tan@ii
  700.   \dimen@#1%
  701.   \ifnum\slcount@<8 \count@9 \else \ifnum\slcount@<12 \count@8 \else
  702.    \count@7 \fi\fi
  703.   \multiply\dimen@\count@\divide\dimen@\ten@
  704.   \dimen@ii\dimen@\multiply\dimen@ii\tan@i\divide\dimen@ii\tan@ii
  705.  \else
  706.   \dimen@ii#1%
  707.   \count@-\slcount@\advance\count@24
  708.   \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8
  709.    \else\count@7 \fi\fi
  710.   \multiply\dimen@ii\count@\divide\dimen@ii\ten@
  711.   \dimen@\dimen@ii\multiply\dimen@\tan@ii\divide\dimen@\tan@i
  712.  \fi}
  713. \def\Nnext@{\ifN@\let\next@\raise\else\let\next@\lower\fi}
  714. \def\arrow@@{\slcount@\angcount@
  715.  \ifNESW@
  716.   \ifnum\angcount@<\ten@
  717.    \let\arrowfont@\arrow@i\global\advance\angcount@\m@ne
  718.    \global\multiply\angcount@13
  719.   \else
  720.    \ifnum\angcount@<19
  721.     \let\arrowfont@\arrow@ii\global\advance\angcount@-\ten@
  722.     \global\multiply\angcount@13
  723.    \else
  724.     \let\arrowfont@\arrow@iii\global\advance\angcount@-19
  725.     \global\multiply\angcount@13
  726.   \fi\fi
  727.   \Tcount@\angcount@
  728.  \else
  729.   \ifnum\angcount@<5
  730.    \let\arrowfont@\arrow@iii\global\advance\angcount@\m@ne
  731.    \global\multiply\angcount@13 \global\advance\angcount@65
  732.   \else
  733.    \ifnum\angcount@<14
  734.     \let\arrowfont@\arrow@iv\global\advance\angcount@-5
  735.     \global\multiply\angcount@13
  736.    \else
  737.     \ifnum\angcount@<23
  738.      \let\arrowfont@\arrow@v\global\advance\angcount@-14
  739.      \global\multiply\angcount@13
  740.     \else
  741.      \let\arrowfont@\arrow@i\global\angcount@117
  742.   \fi\fi\fi
  743.   \ifnum\angcount@=117 \Tcount@115 \else\Tcount@\angcount@\fi
  744.  \Scount@\Tcount@
  745.  \ifE@
  746.   \ifnum\tcount@=\z@\advance\Tcount@\tw@\else\ifnum\tcount@=13
  747.    \advance\Tcount@\tw@\else\advance\Tcount@\tcount@\fi\fi
  748.   \ifnum\scount@=\z@\else\ifnum\scount@=13 \advance\Scount@\thr@@\else
  749.    \advance\Scount@\scount@\fi\fi
  750.  \else
  751.   \ifcase\tcount@\advance\Tcount@\thr@@\or\or\advance\Tcount@\thr@@\or
  752.   \advance\Tcount@\tw@\or\advance\Tcount@6 \or\advance\Tcount@7
  753.   \or\or\or\or\or\advance\Tcount@8 \or\advance\Tcount@9 \or
  754.   \advance\Tcount@12 \or\advance\Tcount@\thr@@\fi
  755.   \ifcase\scount@\or\or\advance\Scount@\thr@@\or\advance\Scount@\tw@\or
  756.   \or\or\advance\Scount@4 \or\advance\Scount@5 \or\advance\Scount@\ten@
  757.   \or\advance\Scount@11 \or\or\or\advance\Scount@12 \or\advance
  758.   \Scount@\tw@\fi
  759.  \ifcase\arrcount@\or\or\global\advance\angcount@\@ne\else\fi
  760.  \ifN@\shifted@\firsty@\else\shifted@-\firsty@\fi
  761.  \ifE@\else\advance\shifted@\charht@\fi
  762.  \goal@\secondy@\advance\goal@-\firsty@
  763.  \ifN@\else\multiply\goal@\m@ne\fi
  764.  \setbox\shaft@\hbox{\arrowfont@\char\angcount@}%
  765.  \ifnum\arrcount@=\thr@@
  766.   \getcos@{1.5\p@}%
  767.   \setbox\shaft@\hbox to\wd\shaft@{\arrowfont@
  768.    \rlap{\hskip\dimen@ii
  769.     \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi
  770.      \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}%
  771.    \rlap{\hskip-\dimen@ii
  772.     \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi
  773.       \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}\hfil}%
  774.  \rlap{\smash{\hskip\tocenter@\hskip\firstx@
  775.   \ifnum\arrcount@=\m@ne
  776.   \else
  777.    \ifnum\arrcount@=\thr@@
  778.    \else
  779.     \ifnum\scount@=\m@ne
  780.     \else
  781.      \ifnum\scount@=\z@
  782.      \else
  783.       \setbox\ZER@\hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi
  784.        \char\Scount@}%
  785.       \ifNESW@
  786.        \ifnum\scount@=\tw@
  787.         \dimen@\shifted@\advance\dimen@-\charht@
  788.         \ifN@\hskip-\wd\ZER@\fi
  789.         \Nnext@
  790.         \next@\dimen@\copy\ZER@
  791.         \ifN@\else\hskip-\wd\ZER@\fi
  792.        \else
  793.         \Nnext@
  794.         \ifN@\else\hskip-\wd\ZER@\fi
  795.         \next@\shifted@\copy\ZER@
  796.         \ifN@\hskip-\wd\ZER@\fi
  797.        \fi
  798.        \ifnum\scount@=12
  799.         \advance\shifted@\charht@\advance\goal@-\charht@
  800.         \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi
  801.        \fi
  802.        \ifnum\scount@=13
  803.         \getcos@{\thr@@\p@}%
  804.         \ifN@\hskip\dimen@\else\hskip-\wd\ZER@\hskip-\dimen@\fi
  805.         \adjust@\shifted@\advance\adjust@\dimen@ii
  806.         \Nnext@
  807.         \next@\adjust@\copy\ZER@
  808.         \ifN@\hskip-\dimen@\hskip-\wd\ZER@\else\hskip\dimen@\fi
  809.        \fi
  810.       \else
  811.        \ifN@\hskip-\wd\ZER@\fi
  812.        \ifnum\scount@=\tw@
  813.         \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi
  814.         \dimen@\shifted@\advance\dimen@-\charht@
  815.         \Nnext@
  816.         \next@\dimen@\copy\ZER@
  817.         \ifN@\hskip-\wd\ZER@\fi
  818.        \else
  819.         \Nnext@
  820.         \next@\shifted@\copy\ZER@
  821.         \ifN@\else\hskip-\wd\ZER@\fi
  822.        \fi
  823.        \ifnum\scount@=12
  824.         \advance\shifted@\charht@\advance\goal@-\charht@
  825.         \ifN@\hskip-\wd\ZER@\else\hskip\wd\ZER@\fi
  826.        \fi
  827.        \ifnum\scount@=13
  828.         \getcos@{\thr@@\p@}%
  829.         \ifN@\hskip-\wd\ZER@\hskip-\dimen@\else\hskip\dimen@\fi
  830.         \adjust@\shifted@\advance\adjust@\dimen@ii
  831.         \Nnext@
  832.         \next@\adjust@\copy\ZER@
  833.         \ifN@\hskip\dimen@\else\hskip-\dimen@\hskip-\wd\ZER@\fi
  834.        \fi    
  835.       \fi
  836.   \fi\fi\fi\fi
  837.   \ifnum\arrcount@=\m@ne
  838.   \else
  839.    \loop
  840.     \ifdim\goal@>\charht@
  841.     \ifE@\else\hskip-\charwd@\fi
  842.     \Nnext@
  843.     \next@\shifted@\copy\shaft@
  844.     \ifE@\else\hskip-\charwd@\fi
  845.     \advance\shifted@\charht@\advance\goal@-\charht@
  846.     \repeat
  847.    \ifdim\goal@>\z@
  848.     \dimen@\charht@\advance\dimen@-\goal@
  849.     \divide\dimen@\tan@i\multiply\dimen@\tan@ii
  850.     \ifE@\hskip-\dimen@\else\hskip-\charwd@\hskip\dimen@\fi
  851.     \adjust@\shifted@\advance\adjust@-\charht@\advance\adjust@\goal@
  852.     \Nnext@
  853.     \next@\adjust@\copy\shaft@
  854.     \ifE@\else\hskip-\charwd@\fi
  855.    \else
  856.     \adjust@\shifted@\advance\adjust@-\charht@
  857.    \fi
  858.   \fi
  859.   \ifnum\arrcount@=\m@ne
  860.   \else
  861.    \ifnum\arrcount@=\thr@@
  862.    \else
  863.     \ifnum\tcount@=\m@ne
  864.     \else
  865.      \setbox\ZER@
  866.       \hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi\char\Tcount@}%
  867.      \ifnum\tcount@=\thr@@
  868.       \advance\adjust@\charht@
  869.       \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi
  870.      \else
  871.       \ifnum\tcount@=12
  872.        \advance\adjust@\charht@
  873.        \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi
  874.       \else
  875.        \ifE@\hskip-\wd\ZER@\fi
  876.      \fi\fi
  877.      \Nnext@
  878.      \next@\adjust@\copy\ZER@
  879.      \ifnum\tcount@=13
  880.       \hskip-\wd\ZER@
  881.       \getcos@{\thr@@\p@}%
  882.       \ifE@\hskip-\dimen@\else\hskip\dimen@\fi
  883.       \advance\adjust@-\dimen@ii
  884.       \Nnext@
  885.       \next@\adjust@\box\ZER@
  886.      \fi
  887.   \fi\fi\fi}}%
  888.  \iflabel@i
  889.   \rlap{\hskip\tocenter@
  890.   \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@
  891.   \advance\dimen@\ldimen@i
  892.   \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@
  893.   \global\multiply\ldimen@i\tan@i\global\divide\ldimen@i\tan@ii
  894.   \ifNESW@\advance\dimen@ii\ldimen@i\else\advance\dimen@ii-\ldimen@i\fi
  895.   \setbox\ZER@\hbox{\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@\else
  896.    \hskip\tw@\p@\fi\fi
  897.    $\m@th\tsize@@\label@i$\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
  898.    \hskip\tw@\p@\fi\fi}%
  899.   \ifnum\arrcount@=\m@ne
  900.    \ifNESW@\advance\dimen@.5\wd\ZER@\advance\dimen@\p@\else
  901.     \advance\dimen@-.5\wd\ZER@\advance\dimen@-\p@\fi
  902.    \advance\dimen@ii-.5\ht\ZER@
  903.   \else
  904.    \advance\dimen@ii\dp\ZER@
  905.    \ifnum\slcount@<6 \advance\dimen@ii\tw@\p@\fi
  906.   \fi
  907.   \hskip\dimen@
  908.   \ifNESW@\let\next@\llap\else\let\next@\rlap\fi
  909.   \next@{\smash{\raise\dimen@ii\box\ZER@}}}%
  910.  \iflabel@ii
  911.   \ifnum\arrcount@=\m@ne
  912.   \else
  913.    \rlap{\hskip\tocenter@
  914.    \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@
  915.    \ifNESW@\advance\dimen@\ldimen@ii\else\advance\dimen@-\ldimen@ii\fi
  916.    \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@
  917.    \global\multiply\ldimen@ii\tan@i\global\divide\ldimen@ii\tan@ii
  918.    \advance\dimen@ii\ldimen@ii
  919.    \setbox\ZER@\hbox{\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
  920.     \hskip\tw@\p@\fi\fi
  921.     $\m@th\tsize@\label@ii$\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@
  922.     \else\hskip\tw@\p@\fi\fi}%
  923.    \advance\dimen@ii-\ht\ZER@
  924.    \ifnum\slcount@<9 \advance\dimen@ii-\thr@@\p@\fi
  925.    \ifNESW@\let\next@\rlap\else\let\next@\llap\fi
  926.    \hskip\dimen@\next@{\smash{\raise\dimen@ii\box\ZER@}}}%
  927.   \fi
  928. \def\outCD@#1{\def#1{\Err@{\noexpand#1must not be used within \string\CD}}}
  929. \def\preCDspace#1{\RIfMIfI@
  930.  \onlydmatherr@\preCDspace\else\advance\preCDskip@#1\relax\fi\else
  931.  \onlydmatherr@\preCDspace\fi}
  932. \def\postCDspace#1{\RIfMIfI@
  933.  \onlydmatherr@\postCDspace\else\advance\postCDskip@#1\relax\fi\else
  934.  \onlydmatherr@\postCDspace\fi}
  935. \def\predisplayspace#1{\RIfMIfI@
  936.  \onlydmatherr@\predisplayspace\else
  937.  \advance\abovedisplayskip#1\relax
  938.  \advance\abovedisplayshortskip#1\relax\fi
  939.  \else\onlydmatherr@\preCDspace\fi}
  940. \def\postdisplayspace#1{\RIfMIfI@
  941.  \onlydmatherr@\postdisplayspace\else
  942.  \advance\belowdisplayskip#1\relax
  943.  \advance\belowdisplayshortskip#1\relax\fi
  944.  \else\onlydmatherr@\postdisplayspace\fi}
  945. \def\PreCDSpace#1{\global\preCDskip@#1\relax}
  946. \def\PostCDSpace#1{\global\postCDskip@#1\relax}
  947. \def\CD#1\endCD{%
  948.  \outCD@\cgaps\outCD@\rgaps\outCD@\Cgaps\outCD@\Rgaps
  949.  \preCD@#1\endCD
  950.  \advance\abovedisplayskip\preCDskip@
  951.  \advance\abovedisplayshortskip\preCDskip@
  952.  \advance\belowdisplayskip\postCDskip@
  953.  \advance\belowdisplayshortskip\postCDskip@
  954.  \vcenter{\offinterlineskip
  955.   \vskip\preCDskip@\Let@\global\colcount@\@ne\global\rowcount@\z@
  956.   \everycr{%
  957.    \noalign{%
  958.     \ifnum\rowcount@=\Rowcount@
  959.     \else
  960.      \getrgap@\rowcount@\vskip\getdim@
  961.      \global\advance\rowcount@\@ne\global\colcount@\@ne
  962.     \fi}}%
  963.   \tabskip\z@
  964.   \halign{&\global\xoff@\z@\global\yoff@\z@
  965.    \getcgap@\colcount@\hskip\getdim@
  966.    \hfil\vrule\height\ten@\p@\width\z@\depth\z@
  967.    $\m@th\displaystyle{##}$\hfil
  968.    \global\advance\colcount@\@ne\cr
  969.    #1\crcr}\vskip\postCDskip@}%
  970.  \preCDskip@\z@\postCDskip@\z@
  971.  \def\getcgap@##1{\ifcase##1\or\getdim@\z@\else\getdim@\standardcgap\fi}%
  972.  \def\getrgap@##1{\ifcase##1\getdim@\z@\else\getdim@\standardrgap\fi}%
  973.  \let\Width@\relax\let\Height@\relax\let\Depth@\relax\let\Rowheight@\relax
  974.  \let\Rowdepth@\relax\let\Colwidth@\relax
  975. \catcode`\@=\active
  976.